A heterogeneous computing environment includes a plurality of nodes having different architectures and operating systems. For instance, at least one node of the environment is based on a different architecture executing a different operating system than at least one other node of the environment. One example of a heterogeneous computing environment is a grid computing environment.
A grid computing environment includes a number of nodes, such as workstations or servers, that cooperate to solve large computing problems. Typically, a grid is spread out over a large geographic area. Individual nodes that contribute to the grid may have many other alternate purposes—at various times, they may be used as nodes within a cluster or as individual workstations, as well as grid members. Typically, the decision to make an individual node or group of nodes available to the grid is based on a number of items, including how busy the node is in its non-grid roles, the demand for grid nodes, and the types of resources dedicated to the node. These resources, such as storage, memory, compute power and file system resources, can be allocated to the greater grid in order to create a powerful, dynamic, problem solving environment.
In the current state of the art, there is a strong affinity between the grid node and the characteristics of the job to be executed on that node. In particular, the node selected to run the job or a portion thereof is to have the correct version of the operating system and the correct platform architecture (i.e., the correct environment). This is a result of the job having bound executable files that are compiled and linked for a particular operating system on a particular platform. For example, the executable files contain machine level instructions which can only run on machines of the same environment. This shortcoming restricts the grid to allocate resources of only those nodes having the same environment as the job to be executed.
Previously, attempts have been made to overcome this shortcoming. However, a need still exists for a capability that facilitates allocation of resources in a heterogeneous computing environment.